﻿/********************************************************************************
** @ Date:2025/05/28
** @ Author: Gaojia
** @ Description:
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef CRobFactHy_H
#define CRobFactHy_H
#include "CRobFactBase.h"
#include "CWorkMngAutoHy.h"
#include "URobotMainUi.h"
#include "CMeasurePoint.h"
#include "CPointMgrBase.h"
enum EPanelType
{
	enCtrPanel,         //机器人控制面板
	enUModelPanel,      //机器人模式面板
	enVideoPanel,       //视频模板
	enStateInfoPanel,   //状态信息模板
	enRobDataTabWidget, //机器人数据展示
	enMainInfoPanel,    //主要信息显示
	enUMapPanel,        //地图面板
	enPanelCount
};
class CRobFactHy :
	public CRobFactBase
{
public:
	CRobFactHy(QString sSceneGuid);
	~CRobFactHy();
	void createAll(void *pData);
	void addAll(CDevDataBase *pDevData,void* pData);
	CDevBase * createDev();
	CRBaseData * createBasicData();       //创建公共数据对象
	CWorkMngrBase * createWorkMngr();     //创建业务逻辑
	URobMainBase *createMainWindow();     //创建主界面
	CPointMgrBase *createMngrBase();      //创建测点管理对象
	QWidget* getPanel(int nId);           //获取指定面板
	QVector<QWidget *>getPanelList();     //获取面板列表


	//添加新设备
	CDevBase* addDev();
	CRBaseData* addBasicData();       //添加公共数据对象
	CWorkMngrBase* addWorkMngr();     //添加业务逻辑
	URobMainBase* addMainWindow();     //添加主界面
	CPointMgrBase* addMngrBase();      //添加测点管理对象
	/**
	* @ Author: Gaojia
	* @ Description: 设备数据、设备对象、基础数据、业务逻辑对象和主界面对象
	*/
	void addDevice();
	//添加默认的机器人设备modbus信息
	void addSensora(QVector<SSensorInfo>& vecSensorData);
	void addDefRobModbusData(QList<QStringList>& listModbusData);
private:
	QWidget * createPanel(int nId);            //创建指定面板
	void registerUi(QWidget *pWidget,int nId); //注册界面
private:
	QString m_sGuid;
	QString m_sId;
	QString m_sName;;
	CDevDataBase       * m_pDevData;
	CDevBase           * m_pRobDev;
	CRBaseData         * m_pRBaseData;
	CWorkMngrBase      * m_pWorkMngrBase;
	CPointMgrBase      * m_pPointMgrBase;
	QVector<QWidget*>     m_vecWidget;
};

#endif